package com.xdcplus.web.service.alarm;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.TreeDto;
import com.xdcplus.web.common.pojo.dto.alarm.ToolAlarmGroupDTO;
import com.xdcplus.web.common.pojo.dto.alarm.ToolAlarmGroupFilterDTO;
import com.xdcplus.web.common.pojo.dto.alarm.ToolAlarmGroupUpdateDTO;
import com.xdcplus.web.common.pojo.entity.alarm.ToolAlarmGroup;
import com.xdcplus.web.common.pojo.vo.alarm.ToolAlarmGroupVO;

import java.util.List;


/**
 * 设备告警组表(ToolAlarmGroup)表服务接口层
 *
 * @author bullion.yan
 * @since 2024-06-05 16:16:14
 */
public interface ToolAlarmGroupService extends BaseService<ToolAlarmGroup, ToolAlarmGroup, ToolAlarmGroupVO> {

    /**
     * 添加设备告警组表(ToolAlarmGroup)
     *
     * @param toolAlarmGroupDTO 设备告警组表(ToolAlarmGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveToolAlarmGroup(ToolAlarmGroupDTO toolAlarmGroupDTO);

    /**
     * 修改设备告警组表(ToolAlarmGroup)
     *
     * @param toolAlarmGroupUpdateDTO 设备告警组表(ToolAlarmGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateToolAlarmGroup(ToolAlarmGroupUpdateDTO toolAlarmGroupUpdateDTO);

    /**
     * 批量保存或更新设备告警组表(ToolAlarmGroup)
     *
     * @param toolAlarmGroupList 设备告警组表(ToolAlarmGroupList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<ToolAlarmGroup> toolAlarmGroupList);

    /**
     * 批量保存或更新设备告警组表(ToolAlarmGroupDTOList)
     *
     * @param toolAlarmGroupDTOList 设备告警组表(ToolAlarmGroupDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<ToolAlarmGroupDTO> toolAlarmGroupDTOList);

    /**
     * 删除设备告警组表(ToolAlarmGroup)
     *
     * @param id 设备告警组表(ToolAlarmGroup)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteToolAlarmGroupLogical(Long id);
    

    /**
     * 查询设备告警组表(ToolAlarmGroup)
     *
     * @param toolAlarmGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolAlarmGroupVO>} 状态信息
     */
    List<ToolAlarmGroupVO> queryToolAlarmGroupVOList(ToolAlarmGroupFilterDTO toolAlarmGroupFilterDTO);

    /**
     * 查询设备告警组表(ToolAlarmGroup)
     *
     * @param toolAlarmGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolAlarmGroupVO>} 状态信息
     */
    PageVO<ToolAlarmGroupVO> queryToolAlarmGroup(ToolAlarmGroupFilterDTO toolAlarmGroupFilterDTO);

    /**
     * 查询一个
     *
     * @param id 设备告警组表(ToolAlarmGroup)主键
     * @return {@link ToolAlarmGroupVO} 设备告警组表(ToolAlarmGroup)信息
     */
    ToolAlarmGroupVO queryToolAlarmGroupById(Long id);

    List<TreeDto<ToolAlarmGroup>> findToolAlarmGroupTree() ;
}
